var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);    // 每月天数
var today = new Today();    // 今日对象
var year = today.year;      // 当前显示的年份
var month = today.month;    // 当前显示的月份

// 页面加载完毕后执行fillBox函数
$(function() {
    fillBox();
    hasTask();
      
});

// 今日对象
function Today() {
    this.now = new Date();
    this.year = this.now.getFullYear();
    this.month = this.now.getMonth();
    this.day = this.now.getDate();
}

// 根据当前年月填充每日单元格
function fillBox() {
    updateDateInfo();                   // 更新年月提示
    $("td.calBox").empty();             // 清空每日单元格

    var dayCounter = 1;                 // 设置天数计数器并初始化为1
    var cal = new Date(year, month, 1); // 以当前年月第一天为参数创建日期对象
    var startDay = cal.getDay();        // 计算填充开始位置
    // 计算填充结束位置
    var endDay = startDay + getDays(cal.getMonth(), cal.getFullYear()) - 1;

    // 如果显示的是今日所在月份的日程，设置day变量为今日日期
    var day = -1;
    if (today.year == year && today.month == month) {
        day = today.day;
    }

    // 从startDay开始到endDay结束，在每日单元格内填入日期信息
    for (var i=startDay; i<=endDay; i++) {
        if (dayCounter==day) {
            $("#calBox" + i).html("<div class='date today' id='" + year + "-" + (month + 1) + "-" + dayCounter + "' onclick='openAddBox(this)'>" + dayCounter + "</div>");
        } else {
            $("#calBox" + i).html("<div class='date' id='" + year + "-" + (month + 1) + "-" + dayCounter + "' onclick='openAddBox(this)'>" + dayCounter + "</div>");
        }
        dayCounter++;
    }
    getTasks();                         // 从服务器获取任务信息
}

// 从服务器获取任务信息
function getTasks() {
    $.getJSON("../servlet/ShowEvents",               // 服务器页面地址
        {
            // action: "getTasks", //action参数
            month: year + "-" + (month + 1),// 年月参数
            anticache : Math.floor(Math.random()*1000)
        },
        function(json) {                    // 回调函数
            // 遍历JSON数组，建立任务信息
            $(json).each(function(i){
                buildTask(json[i].occurtime, json[i].eventid, json[i].eventname);
            });
        }
    );
}

// 根据日期、任务编号、任务内容在页面上创建任务节点
function buildTask(buildDate, eventid, eventname) {
    $("#" + buildDate).parent().append("<div id='task" + eventid + "' class='task' onclick='editTask(this)'>" + eventname + "</div>");
}


// 判断是否闰年返回每月天数
function getDays(month, year) {
    if (1 == month) {
        if (((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400)) {
            return 29;
        } else {
            return 28;
        }
    } else {
        return daysInMonth[month];
    }
}

// 显示上月日程
function prevMonth() {
    if ((month - 1) < 0) {
        month = 11;
        year--;
    } else {
        month--;
    }
    fillBox();              // 填充每日单元格
}

// 显示下月日程
function nextMonth() {
    if((month + 1) > 11) {
        month = 0;
        year++;
    } else {
        month++;
    }
    fillBox();              // 填充每日单元格
}

// 显示本月日程
function thisMonth() {
    year = today.year;
    month = today.month;
    fillBox();              // 填充每日单元格
}

// 更新年月提示
function updateDateInfo() {
    $("#dateInfo").html(year + "年" + (month + 1) + "月");
}

// 打开新建任务box
function openAddBox(src) {
    $("#taskDate").html(src.id);                    // 设置新建日期
    $("#typeid").empty();
    $("#taskInfo").val("");                         // 初始化新建任务内容
    
    $("#eventname").val("");  
	$("#typename").val("");      
    $("#occurtime").val("");  
    
    
    $("#hh").get(0).selectedIndex=0;
    $("#mm").get(0).selectedIndex=0;
    $("#ss").get(0).selectedIndex=0;
    
    $("#earlytime").get(0).selectedIndex=0;
    $("#spaceremindtime").get(0).selectedIndex=0;
    
    var left = getLeft(src) + 15;                   // 设置左边距
    var top = getTop(src) + 15;                     // 设置顶边距
    $("#addBox").left(left).top(top).slideDown();   // 显示新建任务box
    


	$.getJSON("../servlet/ShowType",{
    anticache : Math.floor(Math.random()*1000)
    },
        function(json) {   $(json).each(function(i){
        var option = new Option(json[i].eventype,json[i].typeid);    
        $("#typeid").get(0).options.add(option);               
            });
        }
    );

}




function AddType() {
    var typename=$("#typename").val();
    $.post("../servlet/AddType", {
    typename:typename    
    },
    function(typeid){
     var option = new Option(typename,typeid);    
        $("#typeid").get(0).options.add(option);
         $("#typeid").attr("value", typeid);
         $("#typename").val("");
    }
    );
    
}

function AddEditType(){
    var typename=$("#edittypename").val();
    $.post("../servlet/AddType", {
    typename:typename    
    },
    function(typeid){
     var option = new Option(typename,typeid);    
        $("#edittypeid").get(0).options.add(option);
         $("#edittypeid").attr("value", typeid);
         $("#edittypename").val("");
    }
    );
    
}


// 向服务器提交新任务信息
function addTask() {
    var taskInfo = $("#taskInfo").val();                // 获取任务信息
    var eventname = $("#eventname").val();  
    var typeid = $("#typeid").val();
    var typename = $("#typename").val();
    var occurtime = $("#hh").val()+":"+$("#mm").val()+":"+$("#ss").val();
    var earlytime = $("#earlytime").val();
    var spaceremindtime = $("#spaceremindtime").val();
    var taskDate=$("#taskDate").html();
    
    // 检查任务信息是否为空
    if ($.trim(taskInfo)=="") {
        alert("请输入任务信息。");
    } else {
        var buildDate = $("#taskDate").html();          // 获取任务日期
        $.post("../servlet/AddEvent",                          // 服务器页面地址
            {
                // action: "addTask", //action参数
                eventname: eventname,                     // 任务信息参数
                taskInfo: taskInfo,
                typeid: typeid,
                typename: typename,
                occurtime: taskDate+" "+occurtime,
                earlytime: earlytime,
                spaceremindtime: spaceremindtime
            },
            function(taskId) {                          // 回调函数
                buildTask(taskDate, taskId, eventname); // 建立任务节点
                closeAddBox();                          // 关闭新建任务box
            }
        );
    }
}

// 关闭新建任务box
function closeAddBox() {
    $("#addBox").slideUp();
}

// 打开编辑任务box
function editTask(src) {
var eventid=src.id.substr(4);
var edithh;
var editmm;
var editss;
var editearlytime;
var editspaceremindtime;
$("#edittypeid").empty();
$("#edittaskId").val(src.id.substr(4));             // 对任务编号隐藏域赋值
$("#editeventname").val(src.innerHTML);          // 设置编辑内容

	$.getJSON("../servlet/ShowType",{
    anticache : Math.floor(Math.random()*1000)
    },
        function(json) {   $(json).each(function(i){
        var option = new Option(json[i].eventype,json[i].typeid);    
        $("#edittypeid").get(0).options.add(option);               
            });
        }
    );



    $.getJSON("../servlet/GetOneEvent",{
	eventid: eventid
    // anticache : Math.floor(Math.random()*1000)
    },
        function(json) {  
       $("#edittaskInfo").val(json[0].eventdescribe);
       $("#edittypeid").attr("value",json[0].typeid);
      $("#edithh").attr("value",parseInt(edithh=json[0].occurtime.substr(0,2)));
      $("#editmm").attr("value",parseInt(editmm=json[0].occurtime.substr(3,2)));
      $("#editss").attr("value",parseInt(json[0].occurtime.substr(6,2)));
       $("#editearlytime").attr("value",json[0].early_remindtime);
       $("#editspaceremindtime").attr("value",json[0].space_remindtime);
        
        }
    );

    
    var left = getLeft(src) + 15;                   // 设置左边距
    var top = getTop(src) + 15;                     // 设置顶边距
    $("#editBox").left(left).top(top).slideDown();  // 显示编辑任务box
}

// 删除任务
function delTask() {
    var edittaskId = $("#edittaskId").val();                // 获取任务编号
    $.post("../servlet/DelEvents",                          // 服务器页面地址
        {
           // action: "delTask", //action参数
            eventid: edittaskId                          // 任务编号参数
        },
        function() {                                // 回调函数
            $("#task" + edittaskId).remove();           // 在页面删除任务节点
            closeEditBox();                         // 关闭编辑box
        }
    );
}

// 关闭编辑box
function closeEditBox() {
    $("#editBox").slideUp();
}

// 更新任务信息
function updateTask() {
    
   var edittaskId="task"+$("#edittaskId").val();               // 任务编号
    var taskInfo = $("#edittaskInfo").val();                // 获取任务信息
    var eventname = $("#editeventname").val();  
    var typeid = $("#edittypeid").val();
    var typename = $("#edittypename").val();
    var occurtime = $("#edithh").val()+":"+$("#editmm").val()+":"+$("#editss").val();
    var earlytime = $("#editearlytime").val();
    var spaceremindtime = $("#editspaceremindtime").val();
    var taskDate=$("#"+edittaskId).parent().eq(0).children().attr("id");
    // 检查任务信息是否为空
    if ($.trim(taskInfo)=="") {
        alert("请输入任务信息。");
    } else {
        var buildDate = $("#taskDate").html();          // 获取任务日期
        $.post("../servlet/UpdateEvent",                          // 服务器页面地址
            {
                // action: "addTask", //action参数
                taskId:edittaskId.substr(4,6),
                eventname: eventname,                     // 任务信息参数
                taskInfo: taskInfo,
                typeid: typeid,
                typename: typename,
                occurtime: taskDate+" "+occurtime,
                earlytime: earlytime,
                spaceremindtime: spaceremindtime
            },
            function() {                          // 回调函数
                $("#" + edittaskId).html(eventname);
                closeEditBox();                          // 关闭新建任务box
            }
        );
    }

    
}

// 返回对象对页面左边距
function getLeft(src){
    var obj = src;
    var objLeft = obj.offsetLeft;
    while(obj != null && obj.offsetParent != null && obj.offsetParent.tagName != "BODY"){
        objLeft += obj.offsetParent.offsetLeft;
        obj = obj.offsetParent;
    }
    return objLeft;
}

// 返回对象对页面上边距
function getTop(src){
    var obj = src;
    var objTop = obj.offsetTop;
    while(obj != null && obj.offsetParent != null && obj.offsetParent.tagName != "BODY"){
        objTop += obj.offsetParent.offsetTop;
        obj = obj.offsetParent;
    }
    return objTop;
}

/*
 * 与服务器进行交互.day不当前日暿 存在任务再与数据库进行进一步的交互
 */
function hasTask()
{
  
	$.post("../servlet/HasTask",{},function(data)
	{
	   if(data)
	   {
	       // 弹出提示柿
		    $("#noteview").slideDown("10",function()
			{
			  setTimeout('closeRemind()',4000); // 弹出框消失时长
			}); 
	   }
	   // 发送交互信忿
	   $.getJSON("../servlet/GetTasks",
	   {
	      anticache : Math.floor(Math.random()*1000)
	   },function(json)
	   {
	       json=eval(json); // 添加提示内容
	       for(var i=0;i<json.length;i++)
	       {
	        $("#content").append("<div id='detail'>"+"事件"+json[i].eventname+"将在:"+json[i].occurtime+"发生"+"</div>");
	       }
	   });
	   
	});
}
    // 关闭提示
function closeRemind()
{
	$("#noteview").slideUp();
}